00001
00002 #ifndef INCLUDED_LIB3DS_MATERIAL_H
00003 #define INCLUDED_LIB3DS_MATERIAL_H
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef INCLUDED_LIB3DS_TYPES_H
00027 #include <lib3ds/types.h>
00028 #endif
00029
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033
00034
00035
00036
00037 typedef enum _Lib3dsTextureMapFlags {
00038 LIB3DS_DECALE =0x0001,
00039 LIB3DS_MIRROR =0x0002,
00040 LIB3DS_NEGATE =0x0004,
00041 LIB3DS_NO_TILE =0x0008,
00042 LIB3DS_SUMMED_AREA =0x0010,
00043 LIB3DS_ALPHA_SOURCE =0x0020,
00044 LIB3DS_TINT =0x0040,
00045 LIB3DS_IGNORE_ALPHA =0x0080,
00046 LIB3DS_RGB_TINT =0x0100
00047 } Lib3dsTextureMapFlags;
00048
00049
00050
00051
00052
00053 typedef struct _Lib3dsTextureMap {
00054 char name[64];
00055 Lib3dsDword flags;
00056 Lib3dsFloat percent;
00057 Lib3dsFloat blur;
00058 Lib3dsFloat scale[2];
00059 Lib3dsFloat offset[2];
00060 Lib3dsFloat rotation;
00061 Lib3dsRgb tint_1;
00062 Lib3dsRgb tint_2;
00063 Lib3dsRgb tint_r;
00064 Lib3dsRgb tint_g;
00065 Lib3dsRgb tint_b;
00066 } Lib3dsTextureMap;
00067
00068
00069
00070
00071 typedef enum _Lib3dsAutoReflMapFlags {
00072 LIB3DS_USE_REFL_MAP =0x0001,
00073 LIB3DS_READ_FIRST_FRAME_ONLY =0x0004,
00074 LIB3DS_FLAT_MIRROR =0x0008
00075 } Lib3dsAutoReflectionMapFlags;
00076
00077
00078
00079
00080 typedef enum _Lib3dsAutoReflMapAntiAliasLevel {
00081 LIB3DS_ANTI_ALIAS_NONE =0,
00082 LIB3DS_ANTI_ALIAS_LOW =1,
00083 LIB3DS_ANTI_ALIAS_MEDIUM =2,
00084 LIB3DS_ANTI_ALIAS_HIGH =3
00085 } Lib3dsAutoReflMapAntiAliasLevel;
00086
00087
00088
00089
00090
00091 typedef struct _Lib3dsAutoReflMap {
00092 Lib3dsDword flags;
00093 Lib3dsIntd level;
00094 Lib3dsIntd size;
00095 Lib3dsIntd frame_step;
00096 } Lib3dsAutoReflMap;
00097
00098
00099
00100
00101 typedef enum _Lib3dsMaterialShading {
00102 LIB3DS_WIRE_FRAME =0,
00103 LIB3DS_FLAT =1,
00104 LIB3DS_GOURAUD =2,
00105 LIB3DS_PHONG =3,
00106 LIB3DS_METAL =4
00107 } Lib3dsMaterialShading;
00108
00109
00110
00111
00112
00113 struct _Lib3dsMaterial {
00114 Lib3dsUserData user;
00115 Lib3dsMaterial *next;
00116 char name[64];
00117 Lib3dsRgba ambient;
00118 Lib3dsRgba diffuse;
00119 Lib3dsRgba specular;
00120 Lib3dsFloat shininess;
00121 Lib3dsFloat shin_strength;
00122 Lib3dsBool use_blur;
00123 Lib3dsFloat blur;
00124 Lib3dsFloat transparency;
00125 Lib3dsFloat falloff;
00126 Lib3dsBool additive;
00127 Lib3dsBool use_falloff;
00128 Lib3dsBool self_illum;
00129 Lib3dsIntw shading;
00130 Lib3dsBool soften;
00131 Lib3dsBool face_map;
00132 Lib3dsBool two_sided;
00133 Lib3dsBool map_decal;
00134 Lib3dsBool use_wire;
00135 Lib3dsBool use_wire_abs;
00136 Lib3dsFloat wire_size;
00137 Lib3dsTextureMap texture1_map;
00138 Lib3dsTextureMap texture1_mask;
00139 Lib3dsTextureMap texture2_map;
00140 Lib3dsTextureMap texture2_mask;
00141 Lib3dsTextureMap opacity_map;
00142 Lib3dsTextureMap opacity_mask;
00143 Lib3dsTextureMap bump_map;
00144 Lib3dsTextureMap bump_mask;
00145 Lib3dsTextureMap specular_map;
00146 Lib3dsTextureMap specular_mask;
00147 Lib3dsTextureMap shininess_map;
00148 Lib3dsTextureMap shininess_mask;
00149 Lib3dsTextureMap self_illum_map;
00150 Lib3dsTextureMap self_illum_mask;
00151 Lib3dsTextureMap reflection_map;
00152 Lib3dsTextureMap reflection_mask;
00153 Lib3dsAutoReflMap autorefl_map;
00154 };
00155
00156 extern LIB3DSAPI Lib3dsMaterial* lib3ds_material_new();
00157 extern LIB3DSAPI void lib3ds_material_free(Lib3dsMaterial *material);
00158 extern LIB3DSAPI void lib3ds_material_dump(Lib3dsMaterial *material);
00159 extern LIB3DSAPI Lib3dsBool lib3ds_material_read(Lib3dsMaterial *material, Lib3dsIo *io);
00160 extern LIB3DSAPI Lib3dsBool lib3ds_material_write(Lib3dsMaterial *material, Lib3dsIo *io);
00161
00162 #ifdef __cplusplus
00163 };
00164 #endif
00165 #endif
00166
00167
00168